package com.lqk.singleton.lazysingleton.type2;

/**
 * @author lqk
 * @date 2021/11/29 20:51
 */
public class LazySingleton {
    public static void main(String[] args) {
        // 测试
        Singleton instance = Singleton.getInstance();
    }
}

/**
 * 懒汉式（线程安全，同步方法）
 *  1) 解决了线程不安全问题
 *  2) 效率太低了，每个线程在想获得类的实例时候，执行getInstance()方法都要进行
 *  同步。而其实这个方法只执行一次实例化代码就够了，后面的想获得该类实例，
 *  直接return就行了。方法进行同步效率太低
 *  3) 结论：在实际开发中，不推荐使用这种方式
 */
class Singleton{
    private static Singleton instance;

    private Singleton(){

    }
    // 加入同步代码，解决线程不安全问题
    public static synchronized Singleton getInstance(){
        if (instance == null){
            instance = new Singleton();
        }
        return instance;
    }
}
